

//1.1概念
// 非线性 层次关系的集合
// ·有一个特殊的结点-根结点 根结点没有前去结点
// ·每个子树的根结点 有且只有一个前驱 可以有0/n个后继
// ·树是递归定义的

/*
结点的度：一个结点含有子树的个数称为该结点的度；
树的度：一棵树中，所有结点度的最大值称为树的度；
叶子结点或终端结点：度为0的结点称为叶结点；
双亲结点或父结点：若一个结点含有子结点，则这个结点称为其子结点的父结点；
孩子结点或子结点：一个结点含有的子树的根结点称为该结点的子结点；
根结点：一棵树中，没有双亲结点的结点；
结点的层次：从根开始定义起，根为第1层，根的子结点为第2层，以此类推
树的高度或深度：树中结点的最大层次；
⬇️ ⬇️ ⬇️了解即可
非终端结点或分支结点：度不为0的结点；
兄弟结点：具有相同父结点的结点互称为兄弟结点；
堂兄弟结点：双亲在同一层的结点互为堂兄弟；
结点的祖先：从根到该结点所经分支上的所有结点；
子孙：以某结点为根的子树中任一结点都称为该结点的子孙。
森林：由m（m>=0）棵互不相交的树组成的集合称为森林
*/



//二叉树
//1、不存在度>2的结点
//2、子树有左右之分 不能颠倒 有序树


/*
1. 满二叉树: 一棵二叉树，如果每层的结点数都达到最大值，则这棵二叉树就是满二叉树。也就是说，如果一棵
二叉树的层数为K，且结点总数是 ，则它就是满二叉树。
2. 完全二叉树: 完全二叉树是效率很高的数据结构，完全二叉树是由满二叉树而引出来的。对于深度为K的，有n
个结点的二叉树，当且仅当其每一个结点都与深度为K的满二叉树中编号从0至n-1的结点一一对应时称之为完全二叉树。
要注意的是满二叉树是一种特殊的完全二叉树。
*/

/*
二叉树的性质
    1. 若规定根结点的层数为1，则一棵非空二叉树的第i层上最多有 (i>0)个结点
    2. 若规定只有根结点的二叉树的深度为1，则深度为K的二叉树的最大结点数是 (k>=0)
    3. 对任何一棵二叉树, 如果其叶结点个数为 n0, 度为2的非叶结点个数为 n2,则有n0＝n2＋1
    4. 具有n个结点的完全二叉树的深度k为log2(n+1)上取整
    5. 对于具有n个结点的完全二叉树，如果按照从上至下从左至右的顺序对所有节点从0开始编号，则对于序号为i
    的结点有：
    若i>0，双亲序号：(i-1)/2；i=0，i为根结点编号，无双亲结点
    若2i+1<n，左孩子序号：2i+1，否则无左孩子
    若2i+2<n，右孩子序号：2i+2，否则无右孩子
*/


public class PriorKnowledgeNote {
/*二叉树的存储结构分为：顺序存储和类似于链表的链式存储。
二叉树的链式存储是通过一个一个的节点引用起来的，
常见的表示方式有二叉和三叉表示方式*/
    //链式存储
    // 孩子表示法
    class Node {
        int val; // 数据域
        Node left; // 左孩子的引用，常常代表左孩子为根的整棵左子树
        Node right; // 右孩子的引用，常常代表右孩子为根的整棵右子树
    }
    // 孩子双亲表示法
    class Nodes {
        int val; // 数据域
        Node left; // 左孩子的引用，常常代表左孩子为根的整棵左子树
        Node right; // 右孩子的引用，常常代表右孩子为根的整棵右子树
        Node parent; // 当前节点的根节点
    }


    public static void main(String[] args) {

    }
}


